/**
 * 格式化文件大小
 *
 * @param bytes {number} 文件大小，单位为字节
 * @returns {string} 格式化后的文件大小
 */
function formatFileSize(bytes) {
  if (bytes === undefined || bytes === null) {
    return '-';
  }

  if (bytes < 0) {
    throw new Error('File size cannot be negative');
  }

  const units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB']; // 单位数组

  if (bytes === 0) return '0 B'; // 如果文件大小为0，直接返回

  let size = bytes;
  let unitIndex = 0;

  // 循环计算转换单位
  while (size >= 1024 && unitIndex < units.length - 1) {
    size /= 1024;
    unitIndex++;
  }

  // 格式化为两位小数
  return `${size.toFixed(2)} ${units[unitIndex]}`;
}

const FileUtil = {
  formatFileSize
};

export default FileUtil;
